/**
 */
package br.edu.ufcg.dsc.compiladores.pascal.util;

import br.edu.ufcg.dsc.compiladores.pascal.*;

import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EPackage;

import org.eclipse.emf.ecore.util.Switch;

/**
 * <!-- begin-user-doc -->
 * The <b>Switch</b> for the model's inheritance hierarchy.
 * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
 * to invoke the <code>caseXXX</code> method for each class of the model,
 * starting with the actual class of the object
 * and proceeding up the inheritance hierarchy
 * until a non-null result is returned,
 * which is the result of the switch.
 * <!-- end-user-doc -->
 * @see br.edu.ufcg.dsc.compiladores.pascal.PascalPackage
 * @generated
 */
public class PascalSwitch<T> extends Switch<T>
{
  /**
   * The cached model package
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  protected static PascalPackage modelPackage;

  /**
   * Creates an instance of the switch.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  public PascalSwitch()
  {
    if (modelPackage == null)
    {
      modelPackage = PascalPackage.eINSTANCE;
    }
  }

  /**
   * Checks whether this is a switch for the given package.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @parameter ePackage the package in question.
   * @return whether this is a switch for the given package.
   * @generated
   */
  @Override
  protected boolean isSwitchFor(EPackage ePackage)
  {
    return ePackage == modelPackage;
  }

  /**
   * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @return the first non-null result returned by a <code>caseXXX</code> call.
   * @generated
   */
  @Override
  protected T doSwitch(int classifierID, EObject theEObject)
  {
    switch (classifierID)
    {
      case PascalPackage.MODEL:
      {
        Model model = (Model)theEObject;
        T result = caseModel(model);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.PROGRAM:
      {
        program program = (program)theEObject;
        T result = caseprogram(program);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.PROGRAM_HEADING:
      {
        program_heading program_heading = (program_heading)theEObject;
        T result = caseprogram_heading(program_heading);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.BLOCK:
      {
        block block = (block)theEObject;
        T result = caseblock(block);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.IDENTIFIER_LIST:
      {
        identifier_list identifier_list = (identifier_list)theEObject;
        T result = caseidentifier_list(identifier_list);
        if (result == null) result = caseenumerated_type(identifier_list);
        if (result == null) result = casesimple_type(identifier_list);
        if (result == null) result = casetype(identifier_list);
        if (result == null) result = caseindex_type(identifier_list);
        if (result == null) result = casefile_component_type(identifier_list);
        if (result == null) result = casebase_type(identifier_list);
        if (result == null) result = caseelement_type(identifier_list);
        if (result == null) result = casefile_type(identifier_list);
        if (result == null) result = caseset_type(identifier_list);
        if (result == null) result = caseunpacked_structured_type(identifier_list);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.DECLARATION_PART:
      {
        declaration_part declaration_part = (declaration_part)theEObject;
        T result = casedeclaration_part(declaration_part);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.PROCEDURE_AND_FUNCTION_DECLARATION_PART:
      {
        procedure_and_function_declaration_part procedure_and_function_declaration_part = (procedure_and_function_declaration_part)theEObject;
        T result = caseprocedure_and_function_declaration_part(procedure_and_function_declaration_part);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.FUNCTION_DECLARATION:
      {
        function_declaration function_declaration = (function_declaration)theEObject;
        T result = casefunction_declaration(function_declaration);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.FUNCTION_IDENTIFICATION:
      {
        function_identification function_identification = (function_identification)theEObject;
        T result = casefunction_identification(function_identification);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.FUNCTION_IDENTIFIER:
      {
        function_identifier function_identifier = (function_identifier)theEObject;
        T result = casefunction_identifier(function_identifier);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.FUNCTION_BODY:
      {
        function_body function_body = (function_body)theEObject;
        T result = casefunction_body(function_body);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.PROCEDURE_DECLARATION:
      {
        procedure_declaration procedure_declaration = (procedure_declaration)theEObject;
        T result = caseprocedure_declaration(procedure_declaration);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.PROCEDURE_BODY:
      {
        procedure_body procedure_body = (procedure_body)theEObject;
        T result = caseprocedure_body(procedure_body);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.PROCEDURE_IDENTIFICATION:
      {
        procedure_identification procedure_identification = (procedure_identification)theEObject;
        T result = caseprocedure_identification(procedure_identification);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.PROCEDURE_IDENTIFIER:
      {
        procedure_identifier procedure_identifier = (procedure_identifier)theEObject;
        T result = caseprocedure_identifier(procedure_identifier);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.PROCEDURE_HEADING:
      {
        procedure_heading procedure_heading = (procedure_heading)theEObject;
        T result = caseprocedure_heading(procedure_heading);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.FORMAL_PARAMETER_LIST:
      {
        formal_parameter_list formal_parameter_list = (formal_parameter_list)theEObject;
        T result = caseformal_parameter_list(formal_parameter_list);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.FORMAL_PARAMETER_SECTION:
      {
        formal_parameter_section formal_parameter_section = (formal_parameter_section)theEObject;
        T result = caseformal_parameter_section(formal_parameter_section);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.FUNCTION_PARAMETER_SECTION:
      {
        function_parameter_section function_parameter_section = (function_parameter_section)theEObject;
        T result = casefunction_parameter_section(function_parameter_section);
        if (result == null) result = caseformal_parameter_section(function_parameter_section);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.FUNCTION_HEADING:
      {
        function_heading function_heading = (function_heading)theEObject;
        T result = casefunction_heading(function_heading);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.RESULT_TYPE:
      {
        result_type result_type = (result_type)theEObject;
        T result = caseresult_type(result_type);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.PROCEDURE_PARAMETER_SECTION:
      {
        procedure_parameter_section procedure_parameter_section = (procedure_parameter_section)theEObject;
        T result = caseprocedure_parameter_section(procedure_parameter_section);
        if (result == null) result = caseformal_parameter_section(procedure_parameter_section);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.VARIABLE_PARAMETER_SECTION:
      {
        variable_parameter_section variable_parameter_section = (variable_parameter_section)theEObject;
        T result = casevariable_parameter_section(variable_parameter_section);
        if (result == null) result = caseformal_parameter_section(variable_parameter_section);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.VALUE_PARAMETER_SECTION:
      {
        value_parameter_section value_parameter_section = (value_parameter_section)theEObject;
        T result = casevalue_parameter_section(value_parameter_section);
        if (result == null) result = caseformal_parameter_section(value_parameter_section);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.PARAMETER_TYPE:
      {
        parameter_type parameter_type = (parameter_type)theEObject;
        T result = caseparameter_type(parameter_type);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.CONFORMANT_ARRAY_SCHEMA:
      {
        conformant_array_schema conformant_array_schema = (conformant_array_schema)theEObject;
        T result = caseconformant_array_schema(conformant_array_schema);
        if (result == null) result = caseparameter_type(conformant_array_schema);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.UNPACKED_CONFORMANT_ARRAY_SCHEMA:
      {
        unpacked_conformant_array_schema unpacked_conformant_array_schema = (unpacked_conformant_array_schema)theEObject;
        T result = caseunpacked_conformant_array_schema(unpacked_conformant_array_schema);
        if (result == null) result = caseconformant_array_schema(unpacked_conformant_array_schema);
        if (result == null) result = caseparameter_type(unpacked_conformant_array_schema);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.PACKED_CONFORMANT_ARRAY_SCHEMA:
      {
        packed_conformant_array_schema packed_conformant_array_schema = (packed_conformant_array_schema)theEObject;
        T result = casepacked_conformant_array_schema(packed_conformant_array_schema);
        if (result == null) result = caseconformant_array_schema(packed_conformant_array_schema);
        if (result == null) result = caseparameter_type(packed_conformant_array_schema);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.BOUND_ESPECIFICATION:
      {
        bound_especification bound_especification = (bound_especification)theEObject;
        T result = casebound_especification(bound_especification);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.ORDINAL_TYPE_IDENTIFIER:
      {
        ordinal_type_identifier ordinal_type_identifier = (ordinal_type_identifier)theEObject;
        T result = caseordinal_type_identifier(ordinal_type_identifier);
        if (result == null) result = casebound_especification(ordinal_type_identifier);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.VARIABLE_DECLARATION_PART:
      {
        variable_declaration_part variable_declaration_part = (variable_declaration_part)theEObject;
        T result = casevariable_declaration_part(variable_declaration_part);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.VARIABLE_DECLARATION:
      {
        variable_declaration variable_declaration = (variable_declaration)theEObject;
        T result = casevariable_declaration(variable_declaration);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.LABEL_DECLARATION_PART:
      {
        label_declaration_part label_declaration_part = (label_declaration_part)theEObject;
        T result = caselabel_declaration_part(label_declaration_part);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.CONSTANT_DEFINITION_PART:
      {
        constant_definition_part constant_definition_part = (constant_definition_part)theEObject;
        T result = caseconstant_definition_part(constant_definition_part);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.CONSTANT_DEFINITION:
      {
        constant_definition constant_definition = (constant_definition)theEObject;
        T result = caseconstant_definition(constant_definition);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.TYPE_DEFINITION_PART:
      {
        type_definition_part type_definition_part = (type_definition_part)theEObject;
        T result = casetype_definition_part(type_definition_part);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.TYPE_DEFINITION:
      {
        type_definition type_definition = (type_definition)theEObject;
        T result = casetype_definition(type_definition);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.TYPE:
      {
        type type = (type)theEObject;
        T result = casetype(type);
        if (result == null) result = casefile_component_type(type);
        if (result == null) result = casebase_type(type);
        if (result == null) result = caseelement_type(type);
        if (result == null) result = casefile_type(type);
        if (result == null) result = caseset_type(type);
        if (result == null) result = caseunpacked_structured_type(type);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.POINTER_TYPE:
      {
        pointer_type pointer_type = (pointer_type)theEObject;
        T result = casepointer_type(pointer_type);
        if (result == null) result = casetype(pointer_type);
        if (result == null) result = casefile_component_type(pointer_type);
        if (result == null) result = casebase_type(pointer_type);
        if (result == null) result = caseelement_type(pointer_type);
        if (result == null) result = casefile_type(pointer_type);
        if (result == null) result = caseset_type(pointer_type);
        if (result == null) result = caseunpacked_structured_type(pointer_type);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.TYPE_IDENTIFIER:
      {
        type_identifier type_identifier = (type_identifier)theEObject;
        T result = casetype_identifier(type_identifier);
        if (result == null) result = caseresult_type(type_identifier);
        if (result == null) result = caseparameter_type(type_identifier);
        if (result == null) result = caseordinal_type_identifier(type_identifier);
        if (result == null) result = casetype(type_identifier);
        if (result == null) result = casebound_especification(type_identifier);
        if (result == null) result = casefile_component_type(type_identifier);
        if (result == null) result = casebase_type(type_identifier);
        if (result == null) result = caseelement_type(type_identifier);
        if (result == null) result = casefile_type(type_identifier);
        if (result == null) result = caseset_type(type_identifier);
        if (result == null) result = caseunpacked_structured_type(type_identifier);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.STRUCTURED_TYPE:
      {
        structured_type structured_type = (structured_type)theEObject;
        T result = casestructured_type(structured_type);
        if (result == null) result = casetype(structured_type);
        if (result == null) result = casefile_component_type(structured_type);
        if (result == null) result = casebase_type(structured_type);
        if (result == null) result = caseelement_type(structured_type);
        if (result == null) result = casefile_type(structured_type);
        if (result == null) result = caseset_type(structured_type);
        if (result == null) result = caseunpacked_structured_type(structured_type);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.UNPACKED_STRUCTURED_TYPE:
      {
        unpacked_structured_type unpacked_structured_type = (unpacked_structured_type)theEObject;
        T result = caseunpacked_structured_type(unpacked_structured_type);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.FILE_TYPE:
      {
        file_type file_type = (file_type)theEObject;
        T result = casefile_type(file_type);
        if (result == null) result = caseunpacked_structured_type(file_type);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.FILE_COMPONENT_TYPE:
      {
        file_component_type file_component_type = (file_component_type)theEObject;
        T result = casefile_component_type(file_component_type);
        if (result == null) result = casefile_type(file_component_type);
        if (result == null) result = caseunpacked_structured_type(file_component_type);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.SET_TYPE:
      {
        set_type set_type = (set_type)theEObject;
        T result = caseset_type(set_type);
        if (result == null) result = caseunpacked_structured_type(set_type);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.BASE_TYPE:
      {
        base_type base_type = (base_type)theEObject;
        T result = casebase_type(base_type);
        if (result == null) result = caseset_type(base_type);
        if (result == null) result = caseunpacked_structured_type(base_type);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.RECORD_TYPE:
      {
        record_type record_type = (record_type)theEObject;
        T result = caserecord_type(record_type);
        if (result == null) result = caseunpacked_structured_type(record_type);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.FIELD_LIST:
      {
        field_list field_list = (field_list)theEObject;
        T result = casefield_list(field_list);
        if (result == null) result = caserecord_type(field_list);
        if (result == null) result = caseunpacked_structured_type(field_list);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.FIXED_PART:
      {
        fixed_part fixed_part = (fixed_part)theEObject;
        T result = casefixed_part(fixed_part);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.RECORD_SECTION:
      {
        record_section record_section = (record_section)theEObject;
        T result = caserecord_section(record_section);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.VARIANT_PART:
      {
        variant_part variant_part = (variant_part)theEObject;
        T result = casevariant_part(variant_part);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.VARIANT:
      {
        variant variant = (variant)theEObject;
        T result = casevariant(variant);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.CASE_LABEL_LIST:
      {
        case_label_list case_label_list = (case_label_list)theEObject;
        T result = casecase_label_list(case_label_list);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.ARRAY_TYPE:
      {
        array_type array_type = (array_type)theEObject;
        T result = casearray_type(array_type);
        if (result == null) result = caseunpacked_structured_type(array_type);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.INDEX_TYPE:
      {
        index_type index_type = (index_type)theEObject;
        T result = caseindex_type(index_type);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.ELEMENT_TYPE:
      {
        element_type element_type = (element_type)theEObject;
        T result = caseelement_type(element_type);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.SIMPLE_TYPE:
      {
        simple_type simple_type = (simple_type)theEObject;
        T result = casesimple_type(simple_type);
        if (result == null) result = casetype(simple_type);
        if (result == null) result = caseindex_type(simple_type);
        if (result == null) result = casefile_component_type(simple_type);
        if (result == null) result = casebase_type(simple_type);
        if (result == null) result = caseelement_type(simple_type);
        if (result == null) result = casefile_type(simple_type);
        if (result == null) result = caseset_type(simple_type);
        if (result == null) result = caseunpacked_structured_type(simple_type);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.SUBRANGE_TYPE:
      {
        subrange_type subrange_type = (subrange_type)theEObject;
        T result = casesubrange_type(subrange_type);
        if (result == null) result = casesimple_type(subrange_type);
        if (result == null) result = casetype(subrange_type);
        if (result == null) result = caseindex_type(subrange_type);
        if (result == null) result = casefile_component_type(subrange_type);
        if (result == null) result = casebase_type(subrange_type);
        if (result == null) result = caseelement_type(subrange_type);
        if (result == null) result = casefile_type(subrange_type);
        if (result == null) result = caseset_type(subrange_type);
        if (result == null) result = caseunpacked_structured_type(subrange_type);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.LOWER_BOUND:
      {
        lower_bound lower_bound = (lower_bound)theEObject;
        T result = caselower_bound(lower_bound);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.UPPER_BOUND:
      {
        upper_bound upper_bound = (upper_bound)theEObject;
        T result = caseupper_bound(upper_bound);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.ENUMERATED_TYPE:
      {
        enumerated_type enumerated_type = (enumerated_type)theEObject;
        T result = caseenumerated_type(enumerated_type);
        if (result == null) result = casesimple_type(enumerated_type);
        if (result == null) result = casetype(enumerated_type);
        if (result == null) result = caseindex_type(enumerated_type);
        if (result == null) result = casefile_component_type(enumerated_type);
        if (result == null) result = casebase_type(enumerated_type);
        if (result == null) result = caseelement_type(enumerated_type);
        if (result == null) result = casefile_type(enumerated_type);
        if (result == null) result = caseset_type(enumerated_type);
        if (result == null) result = caseunpacked_structured_type(enumerated_type);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.LABEL:
      {
        LABEL label = (LABEL)theEObject;
        T result = caseLABEL(label);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.DIGIT_SEQUENCE:
      {
        DIGIT_SEQUENCE digiT_SEQUENCE = (DIGIT_SEQUENCE)theEObject;
        T result = caseDIGIT_SEQUENCE(digiT_SEQUENCE);
        if (result == null) result = caseLABEL(digiT_SEQUENCE);
        if (result == null) result = casefactor(digiT_SEQUENCE);
        if (result == null) result = casescale_factor(digiT_SEQUENCE);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.STATEMENT_PART:
      {
        STATEMENT_PART statemenT_PART = (STATEMENT_PART)theEObject;
        T result = caseSTATEMENT_PART(statemenT_PART);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.STATEMENT_SEQUENCE:
      {
        statement_sequence statement_sequence = (statement_sequence)theEObject;
        T result = casestatement_sequence(statement_sequence);
        if (result == null) result = caseSTATEMENT_PART(statement_sequence);
        if (result == null) result = casecompound_statement(statement_sequence);
        if (result == null) result = casestructured_statement(statement_sequence);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.STATEMENT:
      {
        statement statement = (statement)theEObject;
        T result = casestatement(statement);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.STRUCTURED_STATEMENT:
      {
        structured_statement structured_statement = (structured_statement)theEObject;
        T result = casestructured_statement(structured_statement);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.WITH_STATEMENT:
      {
        with_statement with_statement = (with_statement)theEObject;
        T result = casewith_statement(with_statement);
        if (result == null) result = casestructured_statement(with_statement);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.RECORD_VARIABLE:
      {
        record_variable record_variable = (record_variable)theEObject;
        T result = caserecord_variable(record_variable);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.CONDITIONAL_STATEMENT:
      {
        conditional_statement conditional_statement = (conditional_statement)theEObject;
        T result = caseconditional_statement(conditional_statement);
        if (result == null) result = casestructured_statement(conditional_statement);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.CASE_STATEMENT:
      {
        case_statement case_statement = (case_statement)theEObject;
        T result = casecase_statement(case_statement);
        if (result == null) result = caseconditional_statement(case_statement);
        if (result == null) result = casestructured_statement(case_statement);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.CASE_LIMB:
      {
        case_limb case_limb = (case_limb)theEObject;
        T result = casecase_limb(case_limb);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.IF_STATEMENT:
      {
        if_statement if_statement = (if_statement)theEObject;
        T result = caseif_statement(if_statement);
        if (result == null) result = caseconditional_statement(if_statement);
        if (result == null) result = casestructured_statement(if_statement);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.REPETITIVE_STATEMENT:
      {
        repetitive_statement repetitive_statement = (repetitive_statement)theEObject;
        T result = caserepetitive_statement(repetitive_statement);
        if (result == null) result = casestructured_statement(repetitive_statement);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.FOR_STATEMENT:
      {
        for_statement for_statement = (for_statement)theEObject;
        T result = casefor_statement(for_statement);
        if (result == null) result = caserepetitive_statement(for_statement);
        if (result == null) result = casestructured_statement(for_statement);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.INITIAL_EXPRESSION:
      {
        initial_expression initial_expression = (initial_expression)theEObject;
        T result = caseinitial_expression(initial_expression);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.FINAL_EXPRESSION:
      {
        final_expression final_expression = (final_expression)theEObject;
        T result = casefinal_expression(final_expression);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.VARIABLE_IDENTIFIER:
      {
        variable_identifier variable_identifier = (variable_identifier)theEObject;
        T result = casevariable_identifier(variable_identifier);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.REPEAT_STATEMENT:
      {
        repeat_statement repeat_statement = (repeat_statement)theEObject;
        T result = caserepeat_statement(repeat_statement);
        if (result == null) result = caserepetitive_statement(repeat_statement);
        if (result == null) result = casestructured_statement(repeat_statement);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.WHILE_STATEMENT:
      {
        while_statement while_statement = (while_statement)theEObject;
        T result = casewhile_statement(while_statement);
        if (result == null) result = caserepetitive_statement(while_statement);
        if (result == null) result = casestructured_statement(while_statement);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.COMPOUND_STATEMENT:
      {
        compound_statement compound_statement = (compound_statement)theEObject;
        T result = casecompound_statement(compound_statement);
        if (result == null) result = casestructured_statement(compound_statement);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.SIMPLE_STATEMENT:
      {
        simple_statement simple_statement = (simple_statement)theEObject;
        T result = casesimple_statement(simple_statement);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.GOTO_STATEMENT:
      {
        goto_statement goto_statement = (goto_statement)theEObject;
        T result = casegoto_statement(goto_statement);
        if (result == null) result = casesimple_statement(goto_statement);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.PROCEDURE_STATEMENT:
      {
        procedure_statement procedure_statement = (procedure_statement)theEObject;
        T result = caseprocedure_statement(procedure_statement);
        if (result == null) result = casesimple_statement(procedure_statement);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.ASSIGNMENT_STATEMENT:
      {
        assignment_statement assignment_statement = (assignment_statement)theEObject;
        T result = caseassignment_statement(assignment_statement);
        if (result == null) result = casesimple_statement(assignment_statement);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.EXPRESSION:
      {
        expression expression = (expression)theEObject;
        T result = caseexpression(expression);
        if (result == null) result = caseinitial_expression(expression);
        if (result == null) result = casefinal_expression(expression);
        if (result == null) result = casefactor(expression);
        if (result == null) result = caseactual_value(expression);
        if (result == null) result = caseactual_parameter(expression);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.SIMPLE_EXPRESSION:
      {
        simple_expression simple_expression = (simple_expression)theEObject;
        T result = casesimple_expression(simple_expression);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.TERM:
      {
        term term = (term)theEObject;
        T result = caseterm(term);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.FACTOR:
      {
        factor factor = (factor)theEObject;
        T result = casefactor(factor);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.FUNCTION_DESIGNATOR:
      {
        function_designator function_designator = (function_designator)theEObject;
        T result = casefunction_designator(function_designator);
        if (result == null) result = casefactor(function_designator);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.ACTUAL_PARAMETER_LIST:
      {
        actual_parameter_list actual_parameter_list = (actual_parameter_list)theEObject;
        T result = caseactual_parameter_list(actual_parameter_list);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.ACTUAL_PARAMETER:
      {
        actual_parameter actual_parameter = (actual_parameter)theEObject;
        T result = caseactual_parameter(actual_parameter);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.ACTUAL_VALUE:
      {
        actual_value actual_value = (actual_value)theEObject;
        T result = caseactual_value(actual_value);
        if (result == null) result = caseactual_parameter(actual_value);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.SET:
      {
        set set = (set)theEObject;
        T result = caseset(set);
        if (result == null) result = casefactor(set);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.ELEMENT_LIST:
      {
        element_list element_list = (element_list)theEObject;
        T result = caseelement_list(element_list);
        if (result == null) result = caseset(element_list);
        if (result == null) result = casefactor(element_list);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.VARIABLE:
      {
        variable variable = (variable)theEObject;
        T result = casevariable(variable);
        if (result == null) result = caserecord_variable(variable);
        if (result == null) result = casefactor(variable);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.VARIABLE_L:
      {
        variable_l variable_l = (variable_l)theEObject;
        T result = casevariable_l(variable_l);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.EXPRESSION_LIST:
      {
        expression_list expression_list = (expression_list)theEObject;
        T result = caseexpression_list(expression_list);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.CONSTANT:
      {
        constant constant = (constant)theEObject;
        T result = caseconstant(constant);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.REAL_NUMBER:
      {
        REAL_NUMBER reaL_NUMBER = (REAL_NUMBER)theEObject;
        T result = caseREAL_NUMBER(reaL_NUMBER);
        if (result == null) result = casefactor(reaL_NUMBER);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.SCALE_FACTOR:
      {
        scale_factor scale_factor = (scale_factor)theEObject;
        T result = casescale_factor(scale_factor);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.PROCEDURES_AND_FUNCTION_DECLARATION:
      {
        ProceduresAndFunctionDeclaration proceduresAndFunctionDeclaration = (ProceduresAndFunctionDeclaration)theEObject;
        T result = caseProceduresAndFunctionDeclaration(proceduresAndFunctionDeclaration);
        if (result == null) result = caseprocedure_and_function_declaration_part(proceduresAndFunctionDeclaration);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.FUNCTION_DECLARATION_WITH_HEADING:
      {
        FunctionDeclarationWithHeading functionDeclarationWithHeading = (FunctionDeclarationWithHeading)theEObject;
        T result = caseFunctionDeclarationWithHeading(functionDeclarationWithHeading);
        if (result == null) result = casefunction_declaration(functionDeclarationWithHeading);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.FIELD_LIST_CLASS:
      {
        FieldListClass fieldListClass = (FieldListClass)theEObject;
        T result = caseFieldListClass(fieldListClass);
        if (result == null) result = casefield_list(fieldListClass);
        if (result == null) result = caserecord_type(fieldListClass);
        if (result == null) result = caseunpacked_structured_type(fieldListClass);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.VARIABLE_LCLASS:
      {
        VariableLClass variableLClass = (VariableLClass)theEObject;
        T result = caseVariableLClass(variableLClass);
        if (result == null) result = casevariable_l(variableLClass);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.CONST_FROM_ID:
      {
        ConstFromId constFromId = (ConstFromId)theEObject;
        T result = caseConstFromId(constFromId);
        if (result == null) result = caseconstant(constFromId);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.CONST_FROM_DIGIT_SEQUENCE:
      {
        ConstFromDigitSequence constFromDigitSequence = (ConstFromDigitSequence)theEObject;
        T result = caseConstFromDigitSequence(constFromDigitSequence);
        if (result == null) result = caseconstant(constFromDigitSequence);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.CONST_FROM_REAL:
      {
        ConstFromReal constFromReal = (ConstFromReal)theEObject;
        T result = caseConstFromReal(constFromReal);
        if (result == null) result = caseconstant(constFromReal);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      case PascalPackage.CONST_FROM_STRING:
      {
        ConstFromString constFromString = (ConstFromString)theEObject;
        T result = caseConstFromString(constFromString);
        if (result == null) result = caseconstant(constFromString);
        if (result == null) result = defaultCase(theEObject);
        return result;
      }
      default: return defaultCase(theEObject);
    }
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Model</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Model</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseModel(Model object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>program</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>program</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseprogram(program object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>program heading</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>program heading</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseprogram_heading(program_heading object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>block</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>block</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseblock(block object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>identifier list</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>identifier list</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseidentifier_list(identifier_list object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>declaration part</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>declaration part</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T casedeclaration_part(declaration_part object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>procedure and function declaration part</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>procedure and function declaration part</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseprocedure_and_function_declaration_part(procedure_and_function_declaration_part object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>function declaration</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>function declaration</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T casefunction_declaration(function_declaration object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>function identification</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>function identification</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T casefunction_identification(function_identification object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>function identifier</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>function identifier</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T casefunction_identifier(function_identifier object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>function body</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>function body</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T casefunction_body(function_body object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>procedure declaration</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>procedure declaration</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseprocedure_declaration(procedure_declaration object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>procedure body</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>procedure body</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseprocedure_body(procedure_body object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>procedure identification</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>procedure identification</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseprocedure_identification(procedure_identification object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>procedure identifier</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>procedure identifier</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseprocedure_identifier(procedure_identifier object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>procedure heading</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>procedure heading</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseprocedure_heading(procedure_heading object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>formal parameter list</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>formal parameter list</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseformal_parameter_list(formal_parameter_list object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>formal parameter section</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>formal parameter section</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseformal_parameter_section(formal_parameter_section object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>function parameter section</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>function parameter section</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T casefunction_parameter_section(function_parameter_section object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>function heading</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>function heading</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T casefunction_heading(function_heading object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>result type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>result type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseresult_type(result_type object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>procedure parameter section</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>procedure parameter section</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseprocedure_parameter_section(procedure_parameter_section object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>variable parameter section</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>variable parameter section</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T casevariable_parameter_section(variable_parameter_section object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>value parameter section</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>value parameter section</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T casevalue_parameter_section(value_parameter_section object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>parameter type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>parameter type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseparameter_type(parameter_type object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>conformant array schema</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>conformant array schema</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseconformant_array_schema(conformant_array_schema object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>unpacked conformant array schema</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>unpacked conformant array schema</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseunpacked_conformant_array_schema(unpacked_conformant_array_schema object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>packed conformant array schema</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>packed conformant array schema</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T casepacked_conformant_array_schema(packed_conformant_array_schema object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>bound especification</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>bound especification</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T casebound_especification(bound_especification object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>ordinal type identifier</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>ordinal type identifier</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseordinal_type_identifier(ordinal_type_identifier object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>variable declaration part</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>variable declaration part</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T casevariable_declaration_part(variable_declaration_part object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>variable declaration</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>variable declaration</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T casevariable_declaration(variable_declaration object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>label declaration part</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>label declaration part</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caselabel_declaration_part(label_declaration_part object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>constant definition part</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>constant definition part</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseconstant_definition_part(constant_definition_part object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>constant definition</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>constant definition</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseconstant_definition(constant_definition object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>type definition part</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>type definition part</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T casetype_definition_part(type_definition_part object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>type definition</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>type definition</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T casetype_definition(type_definition object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T casetype(type object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>pointer type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>pointer type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T casepointer_type(pointer_type object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>type identifier</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>type identifier</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T casetype_identifier(type_identifier object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>structured type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>structured type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T casestructured_type(structured_type object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>unpacked structured type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>unpacked structured type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseunpacked_structured_type(unpacked_structured_type object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>file type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>file type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T casefile_type(file_type object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>file component type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>file component type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T casefile_component_type(file_component_type object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>set type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>set type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseset_type(set_type object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>base type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>base type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T casebase_type(base_type object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>record type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>record type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caserecord_type(record_type object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>field list</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>field list</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T casefield_list(field_list object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>fixed part</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>fixed part</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T casefixed_part(fixed_part object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>record section</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>record section</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caserecord_section(record_section object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>variant part</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>variant part</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T casevariant_part(variant_part object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>variant</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>variant</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T casevariant(variant object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>case label list</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>case label list</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T casecase_label_list(case_label_list object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>array type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>array type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T casearray_type(array_type object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>index type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>index type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseindex_type(index_type object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>element type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>element type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseelement_type(element_type object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>simple type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>simple type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T casesimple_type(simple_type object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>subrange type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>subrange type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T casesubrange_type(subrange_type object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>lower bound</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>lower bound</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caselower_bound(lower_bound object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>upper bound</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>upper bound</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseupper_bound(upper_bound object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>enumerated type</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>enumerated type</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseenumerated_type(enumerated_type object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>LABEL</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>LABEL</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseLABEL(LABEL object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>DIGIT SEQUENCE</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>DIGIT SEQUENCE</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseDIGIT_SEQUENCE(DIGIT_SEQUENCE object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>STATEMENT PART</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>STATEMENT PART</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseSTATEMENT_PART(STATEMENT_PART object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>statement sequence</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>statement sequence</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T casestatement_sequence(statement_sequence object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>statement</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>statement</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T casestatement(statement object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>structured statement</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>structured statement</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T casestructured_statement(structured_statement object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>with statement</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>with statement</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T casewith_statement(with_statement object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>record variable</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>record variable</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caserecord_variable(record_variable object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>conditional statement</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>conditional statement</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseconditional_statement(conditional_statement object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>case statement</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>case statement</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T casecase_statement(case_statement object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>case limb</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>case limb</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T casecase_limb(case_limb object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>if statement</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>if statement</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseif_statement(if_statement object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>repetitive statement</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>repetitive statement</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caserepetitive_statement(repetitive_statement object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>for statement</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>for statement</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T casefor_statement(for_statement object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>initial expression</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>initial expression</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseinitial_expression(initial_expression object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>final expression</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>final expression</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T casefinal_expression(final_expression object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>variable identifier</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>variable identifier</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T casevariable_identifier(variable_identifier object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>repeat statement</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>repeat statement</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caserepeat_statement(repeat_statement object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>while statement</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>while statement</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T casewhile_statement(while_statement object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>compound statement</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>compound statement</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T casecompound_statement(compound_statement object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>simple statement</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>simple statement</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T casesimple_statement(simple_statement object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>goto statement</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>goto statement</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T casegoto_statement(goto_statement object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>procedure statement</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>procedure statement</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseprocedure_statement(procedure_statement object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>assignment statement</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>assignment statement</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseassignment_statement(assignment_statement object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>expression</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>expression</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseexpression(expression object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>simple expression</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>simple expression</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T casesimple_expression(simple_expression object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>term</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>term</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseterm(term object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>factor</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>factor</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T casefactor(factor object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>function designator</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>function designator</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T casefunction_designator(function_designator object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>actual parameter list</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>actual parameter list</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseactual_parameter_list(actual_parameter_list object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>actual parameter</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>actual parameter</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseactual_parameter(actual_parameter object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>actual value</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>actual value</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseactual_value(actual_value object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>set</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>set</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseset(set object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>element list</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>element list</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseelement_list(element_list object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>variable</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>variable</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T casevariable(variable object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>variable l</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>variable l</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T casevariable_l(variable_l object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>expression list</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>expression list</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseexpression_list(expression_list object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>constant</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>constant</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseconstant(constant object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>REAL NUMBER</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>REAL NUMBER</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseREAL_NUMBER(REAL_NUMBER object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>scale factor</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>scale factor</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T casescale_factor(scale_factor object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Procedures And Function Declaration</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Procedures And Function Declaration</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseProceduresAndFunctionDeclaration(ProceduresAndFunctionDeclaration object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Function Declaration With Heading</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Function Declaration With Heading</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseFunctionDeclarationWithHeading(FunctionDeclarationWithHeading object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Field List Class</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Field List Class</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseFieldListClass(FieldListClass object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Variable LClass</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Variable LClass</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseVariableLClass(VariableLClass object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Const From Id</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Const From Id</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseConstFromId(ConstFromId object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Const From Digit Sequence</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Const From Digit Sequence</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseConstFromDigitSequence(ConstFromDigitSequence object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Const From Real</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Const From Real</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseConstFromReal(ConstFromReal object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>Const From String</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>Const From String</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
   * @generated
   */
  public T caseConstFromString(ConstFromString object)
  {
    return null;
  }

  /**
   * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
   * <!-- begin-user-doc -->
   * This implementation returns null;
   * returning a non-null result will terminate the switch, but this is the last case anyway.
   * <!-- end-user-doc -->
   * @param object the target of the switch.
   * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
   * @see #doSwitch(org.eclipse.emf.ecore.EObject)
   * @generated
   */
  @Override
  public T defaultCase(EObject object)
  {
    return null;
  }

} //PascalSwitch
